package com.reading.controller;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.reading.common.utils.StringUtil;
import com.reading.framework.web.page.PageDomain;
import com.reading.framework.web.page.TableDataInfo;
import com.reading.framework.web.page.TableSupport;
import com.reading.vo.JsonResult;
import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

/**
 * @author guwenqi_1995@163.com
 * @date 2019/7/8 5:15 PM
 **/
public class BaseController {

    /**
     * 将前台传递过来的日期格式的字符串，自动转化为Date类型
     */
    @InitBinder
    public void initBinder(WebDataBinder binder) {
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        dateFormat.setLenient(false);
        binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
    }

    /**
     * 设置请求分页数据
     */
    protected void startPage() {
        PageDomain pageDomain = TableSupport.buildPageRequest();
        Integer pageNum = pageDomain.getPageNum();
        Integer pageSize = pageDomain.getPageSize();
        if (StringUtil.isNotNull(pageNum) && StringUtil.isNotNull(pageSize)) {
            String orderBy = pageDomain.getOrderBy();
            PageHelper.startPage(pageNum, pageSize, orderBy);
        }
    }

    /**
     * 响应请求分页数据
     */
    @SuppressWarnings({"rawtypes", "unchecked"})
    protected TableDataInfo getDataTable(List<?> list) {
        TableDataInfo rspData = new TableDataInfo();
        rspData.setRows(list);
        rspData.setTotal(new PageInfo(list).getTotal());
        return rspData;
    }

    /**
     * 返回成功
     */
    public JsonResult success() {
        return JsonResult.success();
    }

    /**
     * 返回失败消息
     */
    public JsonResult error() {
        return JsonResult.error();
    }

    /**
     * 返回成功消息
     */
    public JsonResult success(String message) {
        return JsonResult.success(message);
    }

    /**
     * 返回失败消息
     */
    public JsonResult error(String message) {
        return JsonResult.error(message);
    }

    /**
     * 返回错误码消息
     */
    public JsonResult error(int code, String message) {
        return JsonResult.error(code, message);
    }

    /**
     * 页面跳转
     */
    public String redirect(String url) {
        return StringUtil.format("redirect:{}", url);
    }

//    public SysUser getUser() {
//        return ShiroUtil.getUser();
//    }
//
//    public void setUser(SysUser user) {
//        ShiroUtil.setUser(user);
//    }
//
//    public Integer getUserId() {
//        return getUser().getUserId();
//    }
//
//    public String getLoginName() {
//        return getUser().getLoginName();
//    }
}
